/*
 *  Librarie de tipuri de date abstracte (TDA)
 
    Copyright (C) 2007  Catedra de Structuri de Date

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License along
    with this program; if not, write to the Free Software Foundation, Inc.,
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */
 
/**
 @file binarysearchtree.h 
 @author Andrei Homescu
 */

#ifndef BINARYSEARCHTREE_H_
#define BINARYSEARCHTREE_H_

struct bst_node;
struct bst_adt;


/**
 @brief Structure representing a doubly-linked list.

 @see See also: LL_New(), LL_Free()
 */
typedef struct bst_adt *BinarySearchTree;

typedef struct bst_node *BSTIterator;

/**
 * @brief Comparator of two elements of the binary tree
 *
 *
 */
typedef int (*BST_Comparator)( const void *el1, const void *el2 );

/**
@brief Creates a new linked list, with no elements.

*/
BinarySearchTree BST_New( BST_Comparator cmp );

/**
@brief Destroys the specified linked list.

@param list the list to be destroyed. A \c LinkedList structure.
*/
void BST_Free( BinarySearchTree bst );



#endif /*BINARYSEARCHTREE_H_*/
